The present invention relates in general to data processing systems, and in particular, to autonomous configuration of devices coupled to a data processing system.
Modems and audio subsystems are now required components of a Windows based PC (personal computer) according to Microsoft""s PC99 specification. This is a requirement for receiving the Microsoft Windows logo. Given the increase in cycle speed in processors, the modem and audio functions are now implemented in software running on the PC processor under Windows operating systems from Microsoft. This is done in order to continue reducing the cost and to provide increased flexibility of software upgrades.
An example of such an implementation is the industry standard called the AMR (audio/modem riser) which defines an architecture consisting of a circuit card or riser card that includes only analog front end hardware for the modem and audio systems. The bulk of the modem and audio processing is done on the host processor. The riser card itself is not a PCI device and is considered a motherboard resource and is therefore not enumerable. Yet a PCI controller is used to provide the interface between the host software and the riser card. The riser contains one or more codecs. The PCI controller may present itself as one or more xe2x80x9cPCI devices.xe2x80x9d
To complicate matters further, the host software drivers for modem and audio as well as the codecs and riser cards are supplied by multiple vendors. For intellectual property protection, a vendor""s modem or audio software is designed to only work with their particular codec. Some codec vendors also make riser cards, while some risers are manufactured by companies that do not make codecs. This levies the requirement that the PCI controller be configurable (support multiple Vendor_IDs) in order for Windows to enumerate it properly.
Proper enumeration will cause the intended drivers (supplied by codec vendors) to be loaded. In addition, proper enumeration will allow information to be reported to Windows regarding who made the riser and whose codec components are included. Finally, proper enumeration will also allow the PCI controller to be configured properly, as one or more PCI devices that support the interfacing functions to each codec on the riser.
The computer system""s BIOS (basic input output system) enumerates PCI devices by reading the vendor specific information from the PCI configuration space and building a table for the operating system to subsequently load the appropriate drivers.
Currently, the AMR architecture requires that a custom BIOS routine execute in order to detect which specific vendor""s riser card is present in the system. The custom BIOS routine then loads in a Vendor_ID into the PCI configuration space as a sub-PCI device ID. Therefore, both the controller, riser, and platform BIOS are xe2x80x9cjoined at the hipxe2x80x9d; all three must be written, tested, maintained, supported, and qualified together. This adds expense and inflexibility.
This xe2x80x9cjoiningxe2x80x9d also results in impossible situations. For example, assume that codec vendor A makes both an audio codec, a modem codec, and a PCI controller. Proper enumeration results in two PCI devices being presented to Windows (a controller xe2x80x9cAxe2x80x9d connected to audio codec xe2x80x9cAxe2x80x9d, and a controller xe2x80x9cAxe2x80x9d connected to modem codec xe2x80x9cAxe2x80x9d). However, if a different manufacturer""s card were plugged into the riser, other results can occur. The new audio and modem codecs made by vendor xe2x80x9cBxe2x80x9d can become connected to PCI controller xe2x80x9cA.xe2x80x9d If company A and B are competitors, the result can be very frustrating for the user who is simply instructed by the operating system to find the xe2x80x9cA-Bxe2x80x9d driver.
What is needed in the art is a mechanism that permits device enumeration without any changes to the platform BIOS. What is also needed in the art is a means to enumerate more functionality beyond media access devices resulting in technology advancement of the riser card uncoupled from the platform (BIOS).
The present invention addresses the foregoing need by allowing an operating system to enumerate multiple PCI devices that are not currently enumerable without customization of the system platform BIOS (basic I/O routines). As a result, the operating system can enumerate such PCI devices without any changes to the platform BIOS, which uncouples the device testing and qualification from the platform, reduces the cost of platform software maintenance by leaving the BIOS unchanged, and uncouples technology advancement of the PCI devices from the system platform BIOS.
More specifically, the present invention provides a process and means for enumeration of multiple devices/functions on a riser card (also motherboard down devices) by making available to the operating system executable code and configuration data without any customization of the platform BIOS. This is accomplished by creating a virtual add-on ROM that the BIOS will detect naturally. A data storage device (e.g., a serial EEPROM) on the riser card will contain the configuration data required for enumeration and also possibly include executable code that will copy the configuration data into the normal PCI configuration space of each device. In one embodiment, the riser serial EEPROM containing configuration data and executable code is copied into an available area of system memory. The serial EEPROM data is structured in system memory so that the BIOS will detect it as it does for add-on ROMs, through the use of an AA55 header. The BIOS will detect this area of system memory when it discovers the AA55 header. The BIOS will treat this area of system memory as an add-on ROM thereby allowing it to execute and initialize any and all PCI configuration spaces with riser configuration. The code executed is able to query the BIOS for other existing PCI peripheral address so that the modem and audio PCI configuration spaces can be located. The BIOS then enumerates all the PCI devices detected in the system.
In another embodiment of the present invention, the configuration data in the EEPROM is treated as a virtual add-on ROM, with optional shadowing of the data to system memory.
One advantage of the present invention is that all riser card related devices can be enumerated without any BIOS customization. Another advantage of the present invention is that riser technology can evolve free of the platform BIOS.
Though the present invention is described with reference to PCI and BIOS entities, the present invention is applicable to any data processing system where extra information or autonomous configuration is required. Furthermore, the present invention is applicable to any system that has a partition with a controller and a media access device (e.g., Ethernet+PHY, DSL hard modem controller+DSP engine, etc.).
The foregoing has outlined rather broadly the features and technical advantages of the present invention in order that the detailed description of the invention that follows may be better understood. Additional features and advantages of the invention will be described hereinafter which form the subject of the claims of the invention.